// ProjectName: go-learn-demo
// PackageName: _4_log
// Description: Go1.21之后的日志标准库 - slog
// Author: hy.bai
// Date: 2025-08-03 18:59

package ybxblog

import (
	"log/slog"
	"os"
)

func printLog() {
	slog.Debug("----debug日志----", "debug", "debug value")
	slog.Info("----info日志----", "info", "info value")
	slog.Warn("----warn日志----", "warn", "some warning")
	slog.Error("----error日志----", "error", "some error")
}

func TestSlogLevel() {
	printLog()
}

func TestSettingLevel() {
	// 设置日志级别为Debug，默认是Info级别
	// slog.SetLogLoggerLevel(slog.LevelDebug)
	// 创建一个新的文本处理程序，并设置日志级别为debug
	logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
		Level: slog.LevelDebug, // 设置日志级别为Debug
	}))
	// 设置全局的日志处理程序
	slog.SetDefault(logger)
	printLog()
}

// 独立创建一个文本格式的日志
func TestSlogTxt() {

	// 创建一个文本处理程序
	opts := &slog.HandlerOptions{
		Level: slog.LevelDebug,
	}
	handler := slog.NewTextHandler(os.Stdout, opts)
	// 创建一个使用文本处理程序的Logger
	logger := slog.New(handler)
	logger.Debug("----debug日志(文本格式日志)----", "debug", "debug value")
	logger.Info("----Info日志(文本格式日志)----", "info", "info value")
}

// 独立创建一个json格式的日志
func TestSlogJson() {

	// 创建一个文本处理程序
	opts := &slog.HandlerOptions{
		Level: slog.LevelDebug,
	}
	handler := slog.NewJSONHandler(os.Stdout, opts)
	// 创建一个使用文本处理程序的Logger
	logger := slog.New(handler)
	logger.Debug("----debug日志(json格式日志)----", "debug", "debug value")
	logger.Info("----Info日志(json格式日志)----", "info", "info value")
}
